在現代軟體開發中,需求文件與最終實作成品之間的鴻溝,往往是導致專案延遲、重工甚至失敗的主因。傳統流程將規格文件視為開發前的參考,一旦開發啟動,文件便迅速過時。為了解決這個痛點,一種名為「規格驅動開發」(Specification-Driven Development, SDD)的新方法論應運而生,它徹底顛覆了開發流程,將「規格」從輔助文件提升為可直接生成程式碼的核心。
本文將帶你深入了解 SDD 的核心理念,並透過一個待辦事項(To-Do List)應用的實例,一步步教你如何使用 spec-kit
與 GitHub Copilot 等 AI 工具,實踐這套先進的開發方法。
Specification-Driven Development 的核心思想是將規格(Specification)視為系統唯一的「真相來源」(Source of Truth)。這代表著幾個關鍵的轉變:
接下來,我們將以建立一個「待辦清單管理系統」為例,展示 SDD 的完整流程。
spec-kit
並初始化專案spec-kit
是由 GitHub 推出的實驗性工具集,旨在輔助實踐 SDD。由於它仍在快速迭代中,請以官方最新文件為準。
首先,打開你的 PowerShell 終端機,執行以下指令來初始化一個名為 todo.list
的專案:
uvx --from git+https://github.com/github/spec-kit.git specify init todo.list
執行完畢後,你會在專案資料夾中看到由 spec-kit
自動產生的幾個核心目錄,包含 Prompt
、Script
與 Template
,這些是後續與 AI 互動的基礎設定。
/constitution
)「憲章」(Constitution)是整個專案的最高指導原則。它定義了程式碼產生的風格、品質標準、測試要求與效能基準。一份好的憲章是確保 AI 生成高品質、一致性程式碼的關鍵。
在 VS Code 中,透過 GitHub Copilot Chat,下達你的第一個指令:
/constitution
接著,定義你的專案法規。例如:
「建立專案開發憲章,包含以下原則:
AI 會根據你的描述,生成一份詳細的憲章文件,作為後續所有步驟的參考基準。
/specify
)這個階段,你需要扮演產品負責人(Product Owner)的角色,專注於定義「為什麼要做」和「需要做什麼」,完全避免陷入「如何實現」的技術細節。
繼續在 Copilot Chat 中下達指令:
`/specify 建立一個待辦清單管理系統,使用者需要能夠:
Copilot 會基於此需求,建立一個新的功能分支,並產生一份名為 spec.md
的規格文件。這份文件通常會包含:
你會發現文件中有些地方被標記為 [NEEDS CLARIFICATION]
。這是 AI 認為規格不夠明確的地方,你需要逐一回答這些問題,直到規格完整、無歧義為止。若涉及使用者介面(UI),建議在此階段補充介面佈局(Layout)與使用者體驗(UX)的行為描述。
/plan
)當規格明確後,就進入了技術規劃階段。在這裡,我們將決定「用什麼技術」以及「怎麼做」。
下達 /plan
指令,並指定你的技術棧:
/plan 採用 C# 語言,搭配 Avalonia UI 框架與 LiteDB 作為本機資料庫。
AI 會根據這份技術選型和先前的 spec.md
,產出一份完整的技術計畫,內容可能包含:
這份計畫產出後,需要由開發團隊進行審核,確保其符合團隊的技術標準與公司的內部規章。
/tasks
)規格與計畫都已確認,接下來就是將宏大的計畫分解為可執行的小任務。
直接下達指令:
/tasks
Copilot 會讀取 spec.md
和技術計畫,自動產生一份詳細的任務清單。每個任務都會清楚說明需要實作的具體內容,甚至建議需要建立的類別(Class)名稱與方法(Method)簽名。
/implement
)這是最後的程式碼實現階段。你可以根據 /tasks
產生的清單,一步步地進行開發。
使用 /implement
指令來處理單一任務:
/implement 執行任務 #1:建立 TodoItem Model 與資料庫存取邏輯。
AI 將會根據任務描述,直接生成對應的 C# 程式碼。你也可以將所有任務推送到 GitHub Issues,指派給團隊成員或其他的 Coding Agent 協同開發,大幅加速專案進度。
導入 SDD 不僅僅是改變工具,更是開發思維的轉變。它帶來了顯著的價值:
SDD 特別適用於以下情境的團隊:
spec-kit
仍在不斷進化,近期新增的 /clarify
與 /analyze
指令,能幫助開發者更快地釐清規格中的模糊地帶,並分析目前規格的覆蓋率,讓整個流程更加完善。
Specification-Driven Development 正引領我們進入一個全新的開發範式,一個由 AI 深度參與、讓開發者能更專注於創造性工作的時代。